home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / MRAC / Lengths / Modify / l-extend < prev    next >
Lisp/Scheme  |  1998-08-11  |  1KB  |  41 lines

  1. l-extend position type beat list
  2.  
  3. Sometimes operations which generate or process note-lengths will produce lists that don't 'add-up' to required zone-lengths. The function l-extend is similar to l-complement in that it adds values to a note-length list to extend the overall zone-length to a user-defined length. Use this function to create the rhythmic subtleties required in the ornamentation of complex figarations.
  4.  
  5. type :rest :note seed
  6. position :first :last :rand seed
  7.  
  8. (setq len (qlength '(20-113 12-101)))
  9. (setq len2 (qlength '((20-113 12-101) (16-0110 8-01))))
  10.  
  11. (l-extend :rand :rest'3/4 len)
  12. => (-1/8 1/20 1/20 3/20 1/12 -1/12 1/12 -1/8)
  13.  
  14. (l-extend :first :rest '1/1 len)
  15. => (-1/2 1/20 1/20 3/20 1/12 -1/12 1/12)
  16.  
  17. (l-extend nil :note '3/4 len)
  18. => (1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  19.  
  20. (l-extend nil nil '3/4 len)
  21. => (1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  22. or (-1/4 1/20 1/20 3/20 1/12 -1/12 1/12)
  23. or (-1/8 1/20 1/20 3/20 1/12 -1/12 1/12 -1/8) ...
  24.  
  25. (l-extend .23 nil '1/1 len)
  26. => (1/4 1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  27. => (-1/4 1/20 1/20 3/20 1/12 -1/12 1/12 -1/4)
  28.  
  29. (l-extend :last nil '3/4 len)
  30. => (1/20 1/20 3/20 1/12 -1/12 1/12 -1/4)
  31. or (1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  32.  
  33. (l-extend :last nil '3/4 len2)
  34. => ((1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  35.     (-1/16 1/16 1/16 -1/16 -1/8 1/8 -1/4))
  36.  
  37. (l-extend nil nil '3/4 len2)
  38. => ((1/20 1/20 3/20 1/12 -1/12 1/12 1/4)
  39.  (-1/16 1/16 1/16 -1/16 -1/8 1/8 -1/4))
  40. ...
  41.